package de.g18.llmaa.gui.workspace.internalFrame.dbAbgleich;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;

import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.filechooser.FileFilter;

import de.g18.llmaa.gui.App_LLMAA_Controler;
import de.g18.llmaa.logic.vos.VOKey_Type;
import de.g18.llmaa.logic.vos.VOProduct_Key;
import de.g18.llmaa.logic.xmlRead.XML_LizenzRead;

public class JPanel_DB_Abgleich_Step_1 extends JPanel {

	private JFileChooser xmlFileChooser;

	private InternalFrame_DB_Abgleich internalFrameDBAbgleich;
	
	private ArrayList<VOProduct_Key> listProducts;
	private HashMap<String, VOKey_Type> listKeyTypes;
	
	public JPanel_DB_Abgleich_Step_1(
			InternalFrame_DB_Abgleich internalFrameDBAbgleich) {
		this.internalFrameDBAbgleich =internalFrameDBAbgleich;
		initGUI();
	}

	private void initGUI() {
	setLayout(new BorderLayout());
	add(getXmlFileChooser(),BorderLayout.CENTER);
	add(new JLabel("XML Auswahl"),BorderLayout.NORTH);
		
	}

	public JFileChooser getXmlFileChooser() {
		if (xmlFileChooser == null) {
			xmlFileChooser = new JFileChooser() {
				public void cancelSelection() {
					
					internalFrameDBAbgleich.closeFrame();
				}
			};
			xmlFileChooser.setFileFilter(new FileFilter() {
				@Override
				public boolean accept(File f) {
					return f.isDirectory()
							|| f.getName().toLowerCase().endsWith(".xml");
				}

				@Override
				public String getDescription() {
					return "Xml";
				}

			});

			xmlFileChooser.addActionListener(new ActionListener() {

	

				public void actionPerformed(ActionEvent e) {

					try {
						XML_LizenzRead read = new XML_LizenzRead(xmlFileChooser
								.getSelectedFile());
						
						
						listProducts = read.getList_ProductKey();
						listKeyTypes = read.getList_KeyTypes();
						internalFrameDBAbgleich.nextStep();
//						model.setList_ProductKey(read.getList_ProductKey());
					} catch (NullPointerException error) {
						showMessageXMLFehlerHaft();
					}

				}

			}

			);
		}
		return xmlFileChooser;
	}

	private void showMessageXMLFehlerHaft() {
		JOptionPane.showMessageDialog(this,
				"Es Wurden keine Lizenzen, \n in diese Datei gefunden");

	}

	public ArrayList<VOProduct_Key> getListProducts() {
		return listProducts;
	}

	public HashMap<String, VOKey_Type> getListKeyTypes() {
		return listKeyTypes;
	}
	
	
	
	
}
